﻿using System.Text.Json.Serialization;

namespace Model.Core.Entity
{


    /// <summary>
    /// 框架实体基类Id
    /// </summary>
    public abstract class EntityBaseId
    {
        /// <summary>
        /// 雪花Id
        /// </summary>
        //[SugarColumn(ColumnDescription = "Id", IsPrimaryKey = true, IsIdentity = false)]
        public virtual Guid Id { get; set; }
    }

    /// <summary>
    /// 框架实体基类
    /// </summary>
    public abstract class EntityBase : EntityBaseId, IDeletedFilter
    {
        /// <summary>
        /// 创建时间
        /// </summary>
        //[SugarColumn(ColumnDescription = "创建时间", IsOnlyIgnoreUpdate = true)]
        public virtual DateTime? CreateTime { get; set; }

        /// <summary>
        /// 更新时间
        /// </summary>
       // [SugarColumn(ColumnDescription = "更新时间", IsOnlyIgnoreInsert = true)]
        public virtual DateTime? UpdateTime { get; set; }

        /// <summary>
        /// 创建者Id
        /// </summary>
      //  [SugarColumn(ColumnDescription = "创建者Id", IsOnlyIgnoreUpdate = true)]
        public virtual long? CreateUserId { get; set; }

        /// <summary>
        /// 修改者Id
        /// </summary>
       // [SugarColumn(ColumnDescription = "修改者Id", IsOnlyIgnoreInsert = true)]
        public virtual long? UpdateUserId { get; set; }

        /// <summary>
        /// 软删除
        /// </summary>
        [JsonIgnore]
        // [SugarColumn(ColumnDescription = "软删除")]
        public virtual bool IsDelete { get; set; } = false;
    }

    public class RobotEntityBase : EntityBase
    {
        //机器人SN信息
        public string? RobotId { get; set; }
    }

    internal interface IDeletedFilter
    {
        /// <summary>
        /// 软删除
        /// </summary>
        bool IsDelete { get; set; }
    }
}
